package friot.utils.tools;

import friot.utils.constants.AppHttpCodeEnum;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 同一返回结果封装类
 *
 * @author He Kuntao
 * @date 2023/11/30 16:33
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Result {
    /**
     * 返回状态码
     */
    private Integer code;
    /**
     * 返回信息
     */
    private String msg;
    /**
     * 返回数据
     */
    private Object data;

    /**
     * 成功返回结果
     *
     * @param data 数据
     */
    public static Result success(Object data) {
        return new Result(AppHttpCodeEnum.SUCCESS.getCode(), AppHttpCodeEnum.SUCCESS.getErrorMessage(), data);
    }

    /**
     * 成功不返回结果
     */
    public static Result success() {
        return new Result(AppHttpCodeEnum.SUCCESS.getCode(), AppHttpCodeEnum.SUCCESS.getErrorMessage(), null);
    }

    /**
     * 失败返回结果
     *
     * @param enums 失败状态枚举
     */
    public static Result error(AppHttpCodeEnum enums) {
        return new Result(enums.getCode(), enums.getErrorMessage(), null);
    }

}
